package br.cesed.pIII.pjcax;

public class AVLTree {

	private AVLNodo raiz = null;
	private AVLNodo maior, menor;
	private int tamanho = 0;

	public AVLTree(AVLNodo raiz) {
		setRaiz(raiz);
		setMaior(raiz);
		setMenor(raiz);
		tamanhoIncrease();
	}

	public void add(int x) {
		AVLNodo temp;
		if (x > maior.getValor()) {
			temp = new AVLNodo(maior, null, null, x);
			maior.setFilhoDir(temp);
			maior = temp;
			tamanhoIncrease();
		} else if (x < menor.getValor()) {
			temp = new AVLNodo(menor, null, null, x);
			menor.setFilhoEsq(temp);
			menor = temp;
			tamanhoIncrease();
		}else {
			temp = new AVLNodo(null, null, null, x);
			AVLNodo.addAVLNodo(temp, raiz);
		}
	}

	public AVLNodo getRaiz() {
		return raiz;
	}

	public void setRaiz(AVLNodo raiz) {
		this.raiz = raiz;
	}

	public AVLNodo getMaior() {
		return maior;
	}

	public AVLNodo getMenor() {
		return menor;
	}

	public int getTamanho() {
		return tamanho;
	}

	private void setMaior(AVLNodo maior) {
		this.maior = maior;
	}

	private void setMenor(AVLNodo menor) {
		this.menor = menor;
	}

	private void tamanhoIncrease() {
		this.tamanho++;
	}

	private void tamanhoDecrease() {
		this.tamanho++;
	}

}
